package com.xbdun.facade.bmp.service.system;

import com.xbdun.common.api.Client;
import com.xbdun.common.api.XbdUnStringResult;
import com.xbdun.facade.bmp.request.system.SysMenuRequest;
import com.xbdun.facade.bmp.result.system.MenuPlatResult;
import com.xbdun.facade.bmp.result.system.PlatListResult;
import com.xbdun.facade.bmp.result.system.SysMenuResult;
import com.xbdun.facade.bmp.result.system.TreeNodeResult;

/**
* @ClassName: SysMenuFacade
* @Description: 菜单信息
* @author wwq
* @date 2017年4月24日 下午3:14:50
*
 */
public interface SysMenuFacade {

	/**
	* 新增平台菜单信息
	* @Title: addSysMenu
	* @Description: 新增平台菜单信息
	* @param  request	请求参数
	 * @param client 客户端
	* @throws Exception    设定文件
	* @return void    返回类型
	*/
	public XbdUnStringResult addSysMenu(SysMenuRequest request, Client client);
	
	/**
	* 根据企业ID查询企业的基本信息
	* @Title: getSysMenu
	* @Description: 根据企业ID查询企业的基本信息
	* @param id			   菜单ID
	* @throws Exception    设定文件
	* @return SysMenuResult    返回类型
	 */
	public SysMenuResult getSysMenu(long id);
	
	/**
	* 修个用户基本信息
	* @Title: modifySysMenu
	* @Description: 修个用户基本信息
	* @param request
	* @return    设定文件
	* @return XbdUnStringResult    返回类型
	 */
	public XbdUnStringResult modifySysMenu(SysMenuRequest request,Client client);
	
	/**
	* 获取平台或者当前机构能够授权的菜单
	* @Title: queryTreeMenu
	* @Description:  获取平台或者当前机构能够授权的菜单
	* @param orgCode 机构Code
	* @param client	   调用客户端
	* @return TreeNodeResult    返回类型
	 */
	public TreeNodeResult queryGrantMenu(Long orgCode,Client client);

	/**
	* 获取指定平台下的菜单树
	* @Title: queryTreeMenu
	* @Description: 获取指定平台下的菜单树
	* @param code 机构Code
	* @param client	   调用客户端
	* @return TreeNodeResult    返回类型
	 */
	public TreeNodeResult queryMenuTree(long code, Client client);

	/**
	* 获取菜单中属于平台的菜单
	* @Title: getAllPlatByMenu
	* @Description:  获取菜单中属于平台的菜单
	* @param client	   调用客户端
	* @return MenuPlatResult    返回类型
	 */
	public MenuPlatResult getAllPlatByMenu(Client client);
	
	/**
	 * 获取所有的平台集合
	 * @Title: getAllPlat
	 * @Description:  获取所有的平台集合
	 * @param client	   调用客户端
	 * @return PlatListResult    返回类型
	 */
	public PlatListResult getAllPlat(Client client);

	/**
	 * 查看菜单详情
	 * @Title: getMenuInfo
	 * @Description:  查看菜单详情
	 * @param client	   调用客户端
	 * @return SysMenuResult    返回类型
	 */
	public SysMenuResult getMenuInfo(Long code, Client client);

	/**
	 * 删除菜单
	 * @Title: deleteSysMenu
	 * @Description:  删除菜单
	 * @param client	   调用客户端
	 * @param code 菜单code
	 * @return XbdUnStringResult    返回类型
	 */
	public XbdUnStringResult deleteSysMenu(Long code, Client client);
	
}
